package com.warren.context.support;

import com.warren.beans.factory.support.DefaultListableBeanFactory;
import com.warren.beans.factory.xml.XmlBeanDefinitionReader;

/**
 * @author warren
 * @create 2021-08-19 21:51
 * @Description 上下文中对配置信息的加载
 */
public abstract class AbstractXmlApplicationContext extends AbstractRefreshableApplicationContext{
    /**
     * 在  AbstractXmlApplicationContext  抽象类的  loadBeanDefinitions  方法实现中，使
     * 用  XmlBeanDefinitionReader  类，处理了关于  XML  文件配置信息的操作。
     * 同时这里又留下了一个抽象类方法，getConfigLocations()，此方法是为了从入口上
     * 下文类，拿到配置信息的地址描述
     */

    @Override
    protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) {
        XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory,this);
        String[] configLocations = getConfigLocations();
        if (null != configLocations){
            beanDefinitionReader.loadBeanDefinitions(configLocations);
        }
    }


    protected abstract String[] getConfigLocations();
}
